package com.xbongbong.pro.statistic.result.pojo;

import com.xbongbong.pro.statistic.result.pojo.vo.ResultDataTableVO;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;

/**
 * 漏斗vo，封装各个阶段的信息：金额、比例、预测金额
 * @author zcp
 * @since v1.0
 * @version v1.0
 */
@Getter
@Setter
@ToString
public class StageFunnelInfoPojo implements Serializable {
    private static final long serialVersionUID = 6773462265771678950L;

    /**
     * 数量
     */
    private Integer count;

    /**
     * 金额
     */
    private Double amount;

    /**
     * 总比例，除过100，前端显示直接拼%
     * 注：实体data内存的比例是乘过100的值，因此，显示时可以直接拼%，相当于除了100
     */
    private Double rateTotal;

    /**
     * 平均比例，未除过100，前端显示直接拼%
     * 注：实体data内存的比例是乘过100的值，因此，显示时可以直接拼%，相当于除了100
     */
    private Double rateAvg;

    /**
     * 预计金额 = sum（金额 * 比例）
     * 注：实体data内存的比例是乘过100的值，因此，计算预测金额时需要除以100
     */
    private Double amountEstimate;

    /**
     * 数量
     */
    private ResultDataTableVO countDataTableVo;

    /**
     *  金额
     */
    private ResultDataTableVO valueDataTableVo;

    public StageFunnelInfoPojo() {
        this.count = 0;
        this.amount = 0D;
        this.rateTotal = 0D;
        this.rateAvg = 0D;
        this.amountEstimate = 0D;
    }
    public StageFunnelInfoPojo(Integer count) {
        this.count = count;
    }
    public StageFunnelInfoPojo(ResultDataTableVO countDataTableVo, ResultDataTableVO valueDataTableVo) {
        this.countDataTableVo = countDataTableVo;
        this.valueDataTableVo = valueDataTableVo;
    }
    public StageFunnelInfoPojo(Integer count, Double amount, Double rateTotal, Double rateAvg, Double amountEstimate) {
        this.count = count;
        this.amount = amount;
        this.rateTotal = rateTotal;
        this.rateAvg = rateAvg;
        this.amountEstimate = amountEstimate;
    }
}
